home *** CD-ROM | disk | FTP | other *** search
- 5 REM MASS MERGE VERSION 9
- 10 DN=PEEK(186)
- 20 IFI=0THENI=1:LOAD"SORT & DIR ML",DN,1
- 30 REM\ MASS MERGER 3 PROGRAM
- 40 REM\ WRITTEN BY KURT BRANDON
- 50 DN=8:REM REL FILE DRIVE
- 60 MF=8:REM MERGE FILE DRIVE
- 70 REMIFI=1THEN150
- 80 DIMOP$(600),IN$(310),SD$(310)
- 90 Z$=CHR$(0):OP$(0)=Z$:NP$=" "
- 100 MD$=""
- 110 S%=0:E%=30:REM FIELD DELIMITERS FOR SORT PROGRAM
- 120 DEFFNDS(R)=(R-INT(R)):RT$=CHR$(13):NL=14
- 130 POKE53281,1:POKE53280,13:POKE646,0
- 140 PRINT"[147]MASS MERGER PROGRAM"
- 150 PRINT" - PLEASE WAIT -"
- 160 REMLOAD"SORT & DIR ML",8,1
- 170 PRINT"[145] "
- 180 INPUT"[145] MERGE FILE DRIVE";MF
- 190 INPUT"LOCATIONS FILE DRIVE";DN
- 200 OPEN15,DN,15:OPEN14,MF,15
- 210 PRINT"[147] "
- 220 GOSUB2970
- 230 PRINT" CHOOSE ONE"
- 240 PRINT" 1) READ A FILE"
- 250 PRINT" 2) MERGE A FILE"
- 260 PRINT" 3) SCRATCH IT"
- 270 PRINT" 4) APPEND TO IT"
- 280 PRINT" 5) QUIT"
- 290 CN=0:INPUT" CHOICE";CN:CN=ABS(INT(CN))
- 300 IFCN<1ORCN>5THENPRINT"[145][145][145]":GOTO290
- 310 ONCNGOTO320,840,540,550,2920
- 320 RC=0:PRINT"[147]HIT ANY KEY AND SELECT FILE"
- 330 PRINT"TO READ FROM MERGE DRIVE"
- 340 POKE198,0:WAIT198,1
- 350 POKE186,MF:SYS49500,G,S
- 360 CLOSE15:OPEN15,DN,15
- 370 IFG$=""THEN210
- 380 OPEN2,MF,2,G$
- 390 GET#2,A$,A$,A$,A$:CLOSE2:IFST=>64THENPRINT"FILE IS EMPTY.":GOTO500
- 400 OPEN2,MF,2,G$
- 410 INPUT#2,SA$,LA$,LO$:RC=RC+1
- 420 PRINT""SA$:PRINT" "LA$:PRINT" "LO$
- 430 IFPEEK(653)<>0THEN430
- 440 GETA$:IFA$="Q"THEN500
- 450 IFST=0THENFORZ=1TO150:NEXT: GOTO410
- 460 CLOSE2
- 470 PRINT" [195][195][195][195][195][195][195][195][195][195][195][195][195]"
- 480 PRINT" "RC"RECORDS"
- 490 PRINT" [195][195][195][195][195][195][195][195][195][195][195][195][195]":PRINT
- 500 CLOSE2:WAIT203,64
- 510 POKE198,0:PRINT" - ANY KEY TO EXIT -"
- 520 WAIT198,1
- 530 GOTO210
- 540 PRINT#14,"S0:MERGE FILE":OPEN2,MF,2,"MERGE FILE,S,W":GOTO560
- 550 OPEN2,MF,2,"MERGE FILE,S,A"
- 560 GOSUB2370
- 570 PRINT"LOCATION[144]"
- 580 SA$="":INPUTSA$:IFLEN(SA$)>30THENPRINT"MORE THAN 30 CHARACTERS[146]":GOTO580
- 590 IFSA$=""THENCLOSE2:GOTO210
- 600 GOSUB2560
- 610 PRINT"LATITUDE[144]":GOSUB2080:LA=RV:LA$=STR$(LA):PRINT:PRINT
- 620 PRINT"LONGITUDE[144]":GOSUB2080:LO=RV:LO$=STR$(LO)
- 630 PRINT"[147]"SA$"[144]"
- 640 PRINT"LATITUDE:"LA;TAB(25);
- 650 S$="N":IFLA<0THENS$="S"
- 660 RV=LA:GOSUB2490
- 670 PRINTS$" "RV$"[144]"
- 680 PRINT"LONGITUDE:"LO;TAB(25);
- 690 S$="W":IFLO<0THENS$="E"
- 700 RV=LO:GOSUB2490
- 710 PRINTS$" "RV$"[144]"
- 720 PRINT" CORRECT?"
- 730 GETA$:IFA$=""THEN730
- 740 IFA$<>"N"ANDA$<>"Y"THEN730
- 750 IFA$="N"THEN560
- 760 PRINT#2,SA$
- 770 PRINT#2,LA$
- 780 PRINT#2,LO$
- 790 GOTO560
- 800 :
- 810 :
- 820 :
- 830 REM\ MERGE SEQ FILE ENTRIES
- 840 PRINT"[147]HIT ANY KEY AND SELECT"
- 850 PRINT"FILE TO MERGE FROM MERGE DRIVE"
- 860 POKE198,0:WAIT198,1
- 870 POKE186,MF:SYS49500,G,S
- 880 CLOSE15:OPEN15,DN,15
- 890 IFG$=""THEN210
- 900 PRINT"[147] MERGE MODE"
- 910 PRINT" 1) MERGE ALL ENTRIES"
- 920 PRINT" 2) MERGE SELECTED ENTRIES"
- 930 PRINT" 3) QUIT TO MAIN MENU"
- 940 INPUT" ";CH
- 950 IFCH<1ORCH>3THENPRINT"[145][145][145][145]":GOTO940
- 960 IFCH=3THENGOTO210
- 970 IFCH=2THENGOTO1000
- 980 IFCH=1THENGOTO1510
- 990 REM\ MANUAL SELECT
- 1000 PRINT"[147] SELECTIVE MERGE - LOADING RECORDS"
- 1010 IN$(0)=Z$:FORI=1TO300:IN$(I)="":NEXT
- 1020 RC=0:OPEN8,MF,8,G$
- 1030 RC=RC+1:GOSUB2950
- 1040 INPUT#8,SA$,LA$,LO$
- 1050 GOSUB2560
- 1060 LL=11:IV$=LA$:GOSUB2650:LA$=IV$
- 1070 IV$=LO$:GOSUB2650:LO$=IV$
- 1080 IN$(RC)=SA$+RT$+LA$+RT$+LO$
- 1090 IFST=0THEN1030
- 1100 CLOSE8
- 1110 FORI=1TO300:SD$(I)=" ":NEXT
- 1120 PO=1:A=1:B=NL:GOSUB1320:KK=1:GOSUB1300
- 1130 :
- 1140 GETA$:IFA$=""THEN1140
- 1150 IFA$=""ANDIN$(A+NL-1)=""THENA=1:B=NL:GOSUB1320:KK=1:GOSUB1300:GOTO1140
- 1160 IFA$=""THENA=A+NL:B=B+NL:GOSUB1320:KK=1:GOSUB1300
- 1170 IFA$="[157]"THENIFA=1THEN1140
- 1180 IFA$="[157]"THENA=A-NL:B=B-NL:GOSUB1320:KK=1:GOSUB1300:GOTO1140
- 1190 IFA$=""THENIFKK=NLTHEN1140
- 1200 IFA$=""THENKK=KK+1:GOSUB1300:GOTO1140
- 1210 IFA$="[145]"THENIFKK=1THEN1140
- 1220 IFA$="[145]"THENKK=KK-1:GOSUB1300:GOTO1140
- 1230 IFA$=RT$THENSD$(A+KK-1)=CHR$(32-10*(ASC(SD$(A+KK-1))=32)):GOSUB1310
- 1240 IFA$="[133]"THENFORYY=ATOB:SD$(YY)="*":NEXT:GOSUB1320:GOSUB1300:GOTO1140
- 1250 IFA$="[137]"THENFORYY=ATOB:SD$(YY)=" ":NEXT:GOSUB1320:GOSUB1300:GOTO1140
- 1260 IFA$="Q"THENCLOSE2:GOTO210
- 1270 IFA$="M"THEN1460
- 1280 IFA$="S"THENSYS49152,U,IN$(0),S%,E%:GOTO1110
- 1290 GOTO1140
- 1300 PRINT""LEFT$(MD$,KS)" ":PRINTLEFT$(MD$,KK+1)">":KS=KK+1:RETURN
- 1310 PRINT"":FORZ=ATOB:PRINT""SD$(Z):NEXT:RETURN
- 1320 PRINT"[147]"
- 1330 FORZ=ATOB
- 1340 PRINT""SD$(Z);LEFT$(IN$(Z),30)
- 1350 NEXT
- 1360 PRINT"- - - - - - - - - - - - - - - - -"
- 1370 PRINT"CRSR LEFT/RIGHT [144]PAGE"
- 1380 PRINT" CRSR UP/DOWN [144]MOVE POINTER"
- 1390 PRINT" RETURN[144] TOGGLE SELECTION"
- 1400 PRINT" F1[144] SELECT ALL ON SCREEN"
- 1410 PRINT" F2[144] DESELECT ALL ON SCREEN"
- 1420 PRINT" Q[144] QUIT TO MAIN MENU"
- 1430 PRINT" M[144] MERGE SELECTED NAMES"
- 1440 PRINT" S[144] SORT"
- 1450 RETURN
- 1460 PRINT"[147]":LK=0:FORI=1TO300
- 1470 IFSD$(I)=" "THENIN$(I)="":GOTO1500
- 1480 IFIN$(I)=""THEN1500
- 1490 LK=LK+1
- 1500 NEXT:GOTO1660
- 1510 PRINT"[147]":FORI=1TO300:IN$(I)="":NEXT:IN$(0)=Z$:OPEN2,MF,2,G$:LK=1
- 1520 :
- 1530 REM\ MERGE...LOAD RECORDS
- 1540 GOSUB2950
- 1550 INPUT#2,SA$,LA$,LO$
- 1560 GOSUB2560:REM FORMAT SA$
- 1570 PRINTSA$
- 1580 LA=VAL(LA$):LA$=STR$(LA)
- 1590 LO=VAL(LO$):LO$=STR$(LO)
- 1600 LL=11:IV$=LA$:GOSUB2650:LA$=IV$
- 1610 IV$=LO$:GOSUB2650:LO$=IV$
- 1620 IN$(LK)=SA$+RT$+LA$+RT$+LO$
- 1630 IFST=0THENLK=LK+1:GOTO1540
- 1640 CLOSE2:GOSUB2930
- 1650 REM\ CHECK MERGE LIST FOR DUPLICATIONS
- 1660 SYS49152,U,IN$(0),S%,E%
- 1670 FORI=1TOLK:PRINTLEFT$(IN$(I),30):NEXT
- 1680 PRINT"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
- 1690 PRINT"CHECKING MERGE LIST FOR DUPLICATIONS":PRINT:PRINT
- 1700 XK=LK:FORI=1TOLK-1
- 1710 TV$=LEFT$(IN$(I),30)
- 1720 PRINTTV$
- 1730 IFTV$=LEFT$(IN$(I+1),30)THENIN$(I)="":XK=XK-1
- 1740 PRINT"[145][145]":NEXT:LK=XK:GOSUB2930
- 1750 SYS49152,U,IN$(0),S%,E%:GOSUB2930
- 1760 :
- 1770 REM\ MERGE...DELETE DUPLICATES
- 1780 :
- 1790 REM\ MERGE THE NEW ENTRIES
- 1800 DL=1:FORIY=65TO90
- 1810 AP=0:N1=0:FORJ=DLTOLK
- 1820 IFLEFT$(IN$(J),1)<>CHR$(IY)THEN1870
- 1830 DL=J+1:IFN1=1THEN1860
- 1840 PRINT"[147] - NEW ENTRIES -"
- 1850 N1=1:FORII=1TO300:OP$(II)="":NEXTII
- 1860 AP=AP+1:OP$(AP)=IN$(J):PRINT""LEFT$(IN$(J),30)"[144]":IN$(J)=""
- 1870 NEXTJ
- 1880 IFAP=0THEN1920
- 1890 PRINT" - MERGING -"
- 1900 SA$=LEFT$(OP$(1),1)
- 1910 GOSUB2700
- 1920 NEXTIY
- 1930 CLOSE2:CLOSE8:GOTO210
- 1940 :
- 1950 :
- 1960 :
- 1970 REM\ POSITION & ERROR SUB
- 1980 RH=INT(RN/256):RL=RN-(256*RH)
- 1990 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1)
- 2000 INPUT#15,E,E$,AA,B
- 2010 IF E=0ORE=50THENRETURN
- 2020 PRINTE;E$;AA;B
- 2030 FORI=1TO15:CLOSEI:NEXT:STOP
- 2040 :
- 2050 :
- 2060 :
- 2070 REM\ INPUT SUB
- 2080 S$="":CC=0:DP=0:MP=0:SP=0:HM=0:DM=0:SG=1
- 2090 DEFFNVC(X)=(X>=48ANDX<=57)OR(X=78ORX=83ORX=69ORX=87ORX=58ORX=20ORX=13ORCV=46)
- 2100 FORKI=0TO40
- 2110 IFKI=0THENPRINT" [146][157]";
- 2120 IFKI=20THENPRINT" [157]";
- 2130 GETA$:IFA$<>""THENGOTO2150
- 2140 NEXTKI:GOTO2100
- 2150 CV=ASC(A$):IFFNVC(CV)=0THENGOTO2100
- 2160 IFCV=13ORCV=20THENPRINT" [157]";
- 2170 IFCV<>13ANDCV<>20THENCC=CC+1:PRINTA$;:IFCV<>58THENS$=S$+A$
- 2180 IFCC=0THENGOTO2220
- 2190 IFCV<>20THENGOTO2220
- 2200 FORKI=1TOCC:PRINT"[157]";:NEXT:FORKI=1TOCC:PRINT"[160]";:NEXT:FORKI=1TOCC:PRINT"[157]";:NEXT
- 2210 GOTO2080
- 2220 IFCV=58ANDDM=0THENDP=VAL(S$):DM=1:S$="":GOTO2100
- 2230 IFCV=58ANDDM=1THENMP=VAL(S$):DM=2:S$="":GOTO2100
- 2240 IFDM=1ANDCV=13THENMP=VAL(S$):S$="":GOTO2290
- 2250 IFDM=2ANDCV=13THENSP=VAL(S$):S$="":GOTO2290
- 2260 IFCV=78ORCV=87THENSG=1:CV=58:GOTO2220
- 2270 IFCV=83ORCV=69THENSG=-1:CV=58:GOTO2220
- 2280 IFCV=78ORCV=87ORCV=83ORCV=69THENSP=VAL(S$)
- 2290 IFCV=13AND(DM=1ORDM=2)THENRV=(DP+MP/60+SP/3600)*SG:RETURN
- 2300 IFCV=13ANDDM=0THENRV=VAL(S$)*SG:RETURN
- 2310 GOTO2100
- 2320 IFD<>1THENGOTO2290
- 2330 :
- 2340 :
- 2350 :
- 2360 REM\ INPUT EXPLANATION SUB
- 2370 PRINT"[147]TO ENTER LOCATIONS":PRINT" DECIMAL: XXX.XX "
- 2380 PRINT" DEG/MIN/SEC: DD:MM:SS"
- 2390 PRINT" FOLLOW COORDINATE"
- 2400 PRINT" WITH E[144] FOR EAST LONGITUDE (DEFAULT:W[144])"
- 2410 PRINT" OR S[144] FOR SOUTH LATITUDE (DEFAULT:N[144])"
- 2420 PRINT" AFTER ENTRY, RETURN[144]"
- 2430 PRINT" TO EXIT, PRESS RETURN[144] WITH NO INPUT"
- 2440 PRINT" [195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][178][195][195][195][195][195][195]":RETURN
- 2450 :
- 2460 :
- 2470 :
- 2480 REM\ DEGREES-MINUTES-SECONDS SUB
- 2490 RV=ABS(RV)
- 2500 DP=INT(RV):MP=60*FNDS(RV):SP=60*FNDS(MP):MP=INT(MP+.5):DM=1
- 2510 RV$=STR$(DP)+"[188]"+STR$(MP)+"'":RETURN
- 2520 :
- 2530 :
- 2540 :
- 2550 REM\ FORMAT PLACE NAME SUB
- 2560 K2$="":FORII=1TOLEN(SA$):K2=ASC(MID$(SA$,II,1)):K2=K2AND127
- 2570 K2$=K2$+CHR$(K2):NEXT:SA$=K2$
- 2580 IFLEFT$(SA$,1)=" "THENSA$=RIGHT$(SA$,LEN(SA$)-1):GOTO2580
- 2590 IFLEN(SA$)<30THENSA$=SA$+LEFT$(NP$,30-LEN(SA$))
- 2600 RETURN
- 2610 :
- 2620 :
- 2630 :
- 2640 REM\ FORMAT PARAMETER SUB
- 2650 IFRIGHT$(IV$,1)=" "THENIV$=LEFT$(IV$,LEN(IV$)-1):GOTO2650
- 2660 IV$=IV$+LEFT$(NP$,LL-LEN(IV$)):RETURN
- 2670 :
- 2680 :
- 2690 REM\ MERGE SUB
- 2700 PRINT"LOADING"
- 2710 OPEN8,DN,8,LEFT$(SA$,1):RN=1
- 2720 GOSUB1980:GOSUB1990:INPUT#8,MN
- 2730 FORRN=2TOMN:GOSUB1980:GOSUB1990:GOSUB2950
- 2740 PRINT" ":PRINT"[145]"MN-1;RN-1"[145]"
- 2750 INPUT#8,SA$,LA$,LO$
- 2760 OP$(RN+AP-1)=SA$+RT$+LA$+RT$+LO$
- 2770 NEXT
- 2780 PRINT"PROCESSING":SYS49152,U,OP$(0),S%,E%
- 2790 QK=MN+AP:XK=QK:GOSUB2930:FORI=1TOQK-1
- 2800 TV$=LEFT$(OP$(I),30)
- 2810 IFTV$=LEFT$(OP$(I+1),30)THENOP$(I)="":XK=XK-1
- 2820 NEXT:PRINTQK-XK" DELETIONS":QK=XK:GOSUB2930
- 2830 SYS49152,U,OP$(0),S%,E%
- 2840 RN=1:GOSUB1980:GOSUB1990:PRINT#8,QK
- 2850 PRINT"WRITING":FORII=1TOQK:RN=II+1:
- 2860 PRINT" ":PRINT"[145]"QK-1;II-1"[145]"
- 2870 GOSUB1980:GOSUB1990:GOSUB2950
- 2880 PRINT#8,OP$(II);:OP$(II)="":NEXT:CLOSE8:RETURN
- 2890 :
- 2900 :
- 2910 :
- 2920 FORI=1TO15:CLOSEI:NEXT:POKE186,8:END
- 2930 REMPOKE198,0:WAIT198,1:RETURN
- 2940 RETURN
- 2950 IFPEEK(52)<PEEK(50)+3THENYX=FRE(0)
- 2960 RETURN
- 2970 RETURN:FORI=1TO600:OP$(I)="":NEXT
- 2980 FORI=1TO300:IN$(I)="":NEXT
- 2990 FORI=1TO300:SD$(I)="":NEXT
- 3000 RETURN
-